package com.wuyou.designPatterns.interpreter;

import java.util.StringTokenizer;

/**
 * @Description
 * @Author 无忧
 * @Date 2024/10/20 21:59
 */
public class Context {

    private StringTokenizer tokenizer;

    private String currentToken;

    public Context(String text){
        tokenizer = new StringTokenizer(text);
        nextToken();
    }

    public String nextToken(){
        if(tokenizer.hasMoreTokens()){
            currentToken = tokenizer.nextToken();
        }else {
            currentToken = null;
        }
        return currentToken;
    }

    public String currentToken(){
        return currentToken;
    }

    public void skipToken(String token) throws ParseException{
        if (!token.equals(currentToken)) {
            throw new ParseException("Warnging: " + token + " is expected, but " + currentToken + " is found.");
        }
        nextToken();
    }

    public int currentNumber() throws ParseException {
        int number = 0;
        try{
            number = Integer.parseInt(currentToken);
        }catch (NumberFormatException e) {
            throw new ParseException("Warning: " + e);
        }
        return number;
    }
}
